🎖️GitЯра🎖️
.github/workflows/pull-request.yml renovate/coil (9fe1a286) Text, 4.93 KB
Tff7b72nameTb4b4b4: Ta5d6ffPullTa5d6ff Ta5d6ffRequestTa5d6ff Ta5d6ffCI
Tff7b72onTb4b4b4:
Tff7b72pull_requestTb4b4b4:
Tff7b72branchesTb4b4b4: Tb4b4b4[ Te6edf3main Tb4b4b4]
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72concurrencyTb4b4b4:
Tff7b72groupTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.workflowTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.event.pull_request.numberTa5d6ff Ta5d6ff||Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff}}
Tff7b72cancel-in-progressTb4b4b4: Ta5d6fftrue
Tff7b72jobsTb4b4b4:
T8b949e# 1. CHANGE DETECTION: Prevents unnecessary builds
Tff7b72check-changesTb4b4b4:
Tff7b72ifTb4b4b4: Ta5d6ffgithub.repositoryTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'meshtastic/Meshtastic-Android'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff!(Ta5d6ff Ta5d6ffgithub.head_refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'scheduled-updates'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ffgithub.head_refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'l10n_main'Ta5d6ff Ta5d6ff)
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04-arm
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff10
Tff7b72outputsTb4b4b4:
Tff7b72androidTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.filter.outputs.androidTa5d6ff Ta5d6ff}}
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v6
Tb4b4b4- Tff7b72usesTb4b4b4: Ta5d6ffdorny/paths-filter@v4
Tff7b72idTb4b4b4: Ta5d6fffilter
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff'Ta5d6ff'
Tff7b72filtersTb4b4b4: Tb4b4b4|
Tff7b72android:
Tff7b72# CI/workflow implementation
Tff7b72- '.github/workflows/**'
Tff7b72- '.github/actions/**'
Tff7b72# Product modules validated by reusable-check
Tff7b72- 'androidApp/**'
Tff7b72- 'baselineprofile/**'
Tff7b72- 'desktopApp/**'
Tff7b72- 'core/**'
Tff7b72- 'feature/**'
Tff7b72- 'screenshot-tests/**'
Tff7b72# Shared build infrastructure
Tff7b72- 'build-logic/**'
Tff7b72- 'config/**'
Tff7b72- 'gradle/**'
Tff7b72# Root build entrypoints/config that can alter task graph or outputs
Tff7b72- 'build.gradle.kts'
Tff7b72- 'config.properties'
Tff7b72- 'compose_compiler_config.conf'
Tff7b72- 'gradle.properties'
Tff7b72- 'gradlew'
Tff7b72- 'gradlew.bat'
Tff7b72- 'settings.gradle.kts'
Tff7b72- 'test.gradle.kts'
T8b949e# 1b. FILTER DRIFT CHECK: Ensures check-changes stays aligned with module roots
Tff7b72verify-check-changes-filterTb4b4b4:
Tff7b72ifTb4b4b4: Ta5d6ffgithub.repositoryTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'meshtastic/Meshtastic-Android'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff!(Ta5d6ff Ta5d6ffgithub.head_refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'scheduled-updates'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ffgithub.head_refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'l10n_main'Ta5d6ff Ta5d6ff)
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04-arm
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff10
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v6
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6ffmoduleTa5d6ff Ta5d6ffrootsTa5d6ff Ta5d6ffareTa5d6ff Ta5d6ffrepresentedTa5d6ff Ta5d6ffinTa5d6ff Ta5d6ffcheck-changesTa5d6ff Ta5d6fffilter
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72python3 - <<'PY'
Tff7b72import re
Tff7b72from pathlib import Path
Tff7b72settings = Path('settings.gradle.kts').read_text()
Tff7b72workflow = Path('.github/workflows/pull-request.yml').read_text()
Tff7b72module_roots = {
Tff7b72module.split(':')[0]
Tff7b72for module in re.findall(r'":([^"]+)"', settings)
Tff7b72}
Tff7b72allowed_extra_roots = {'baselineprofile'}
Tff7b72expected_roots = module_roots | allowed_extra_roots
Tff7b72filter_paths = {
Tff7b72path.split('/')[0]
Tff7b72for path in re.findall(r"-\s*'([^']+/\*\*)'", workflow)
Tff7b72}
Tff7b72actual_module_roots = filter_paths & expected_roots
Tff7b72missing = sorted(expected_roots - actual_module_roots)
Tff7b72unexpected = sorted(actual_module_roots - expected_roots)
Tff7b72if missing or unexpected:
Tff7b72print('check-changes filter drift detected:')
Tff7b72if missing:
Tff7b72print(' Missing roots:', ', '.join(missing))
Tff7b72if unexpected:
Tff7b72print(' Unexpected roots:', ', '.join(unexpected))
Tff7b72raise SystemExit(1)
Tff7b72print('check-changes filter is aligned with settings.gradle module roots.')
Tff7b72PY
T8b949e# 2. VALIDATION & BUILD: Delegate to reusable-check.yml
T8b949e# We disable coverage and desktop builds for PRs to keep feedback fast
T8b949e# (< 10 mins). Desktop compilation is already covered by the :desktopApp:test
T8b949e# task in the shard-app test shard.
Tff7b72validate-and-buildTb4b4b4:
Tff7b72needsTb4b4b4: Ta5d6ffcheck-changes
Tff7b72ifTb4b4b4: Ta5d6ffneeds.check-changes.outputs.androidTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'true'
Tff7b72usesTb4b4b4: Ta5d6ff./.github/workflows/reusable-check.yml
Tff7b72withTb4b4b4:
Tff7b72run_lintTb4b4b4: Ta5d6fftrue
Tff7b72run_unit_testsTb4b4b4: Ta5d6fftrue
Tff7b72run_coverageTb4b4b4: Ta5d6fffalse
Tff7b72upload_artifactsTb4b4b4: Ta5d6fftrue
Tff7b72secretsTb4b4b4: Ta5d6ffinherit
T8b949e# 3. WORKFLOW STATUS: Ensures required checks are satisfied
Tff7b72check-workflow-statusTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffCheckTa5d6ff Ta5d6ffWorkflowTa5d6ff Ta5d6ffStatus
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04-arm
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff5
Tff7b72permissionsTb4b4b4: Tb4b4b4{Tb4b4b4}
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3check-changesTb4b4b4, Te6edf3verify-check-changes-filterTb4b4b4, Te6edf3validate-and-buildTb4b4b4]
Tff7b72ifTb4b4b4: Ta5d6ffalways()
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckTa5d6ff Ta5d6ffWorkflowTa5d6ff Ta5d6ffStatus
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72if [[ "${{ needs.verify-check-changes-filter.result }}" == "failure" || "${{ needs.verify-check-changes-filter.result }}" == "cancelled" ]]; then
Tff7b72echo "::error::check-changes filter verification failed"
Tff7b72exit 1
Tff7b72fi
Tff7b72# If changes were detected but build failed, fail the status check
Tff7b72if [[ "${{ needs.check-changes.outputs.android }}" == "true" && ("${{ needs.validate-and-build.result }}" == "failure" || "${{ needs.validate-and-build.result }}" == "cancelled") ]]; then
Tff7b72echo "::error::Android Check failed"
Tff7b72exit 1
Tff7b72fi
Tff7b72# If no changes were detected, this still succeeds to satisfy required status check
Tff7b72echo "Workflow status satisfied."
Served by rngit 1.5.1 - Generated in 0.05s